package com.chixing.day11_exception;

import java.util.Arrays;
import java.util.Map.Entry;

public class MapSum {
    private Entry[] entryArr;
    private int size;
    public MapSum(){
        this(16);
    }
    public MapSum(int initCapacity){
        entryArr = new Entry[initCapacity];
    }
    private class Entry{
        String key;
        int value;

        private Entry(String key ,int value){
            this.key = key;
            this.value = value;
        }

    }

    /**
     * 插入 key-val 键值对，字符串表示键 key ，整数表示值 val 。
     * 如果键 key 已经存在，那么原来的键值对将被替代成新的键值对
     * @param key
     * @param value
     */
    public void insert(String key,int value){
        if (containKey(key)){//key已经存在
            Entry entry = get(key);
            entry.value = value;
        }else{//key不存在
            if (size == entryArr.length)//扩容
                entryArr = Arrays.copyOf(entryArr,entryArr.length<<1);
            entryArr[size++]= new Entry(key,value);
        }
    }

    private boolean containKey(String key){
        for (int i = 0; i <size ; i++) {
            if (entryArr[i].key.equals(key))
                return true;
        }
        return false;
    }
    /**
     * 根据key获得到该键值对对象
     * @param key
     * @return
     */
    private Entry get(String key){
        for (int i = 0; i <size ; i++) {
            if (entryArr[i].key.equals(key))
                return entryArr[i];
        }
        return null;
    }
    public int size(){
        return this.size;
    }

    public void show(){
        for (int i = 0; i <size ; i++) {
            System.out.println(entryArr[i] + "-" + entryArr[i].value);
        }
    }
}
